﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G2Horario
{
    public partial class selectHorariosPreMatricula : System.Web.UI.Page
    {
        #region Atributos
        
            private Estudiante _estudianteActual;
            private TableCell _newCell;
            private TableRow _newRow;
            private RadioButtonList _misRadioSecciones;
            private SeccionMateria _miSeccionSeleccionada;
            private List<SeccionMateria> _misSeccionesSeleccionadas;
            private List<Materia> _misMateriasSeleccionadas;
            private int _counterSecciones;
            private List<SeccionMateria> _misSeccionesPorMateria;
            private List<SeccionMateria> _listaSeccionesMateria;
            private int _counterSelected;
            private string _minuteIni;
            private string _minuteFin;

        #endregion Atributos

        #region Metodos

            protected void InitSecure()
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Estudiante")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");

                //Session["rol"] = "";
                _estudianteActual = new Estudiante();
                _estudianteActual = (Estudiante)Session["usuario"];

                if (_estudianteActual.ExistPreMatriculaActiva())
                {
                    Response.Write("<script language=\"javascript\">alert('Ya usted no puede registrar mas PreMatriculas')</script>" +
                                    "<script language=\"javascript\">window.location='indexPreMatricula.aspx'</script>");
                }
                if (_estudianteActual.SecuenceCounter != 2)
                    Response.Redirect("indexPreMatricula.aspx");
            }

            protected void InitComponents()
            {
                labelEstudiante.Text = _estudianteActual.Nombre + "&nbsp;" + _estudianteActual.Apellido;
                _miSeccionSeleccionada = new SeccionMateria();
                _misSeccionesSeleccionadas = new List<SeccionMateria>();
                _misMateriasSeleccionadas = new List<Materia>();
                _misSeccionesPorMateria = new List<SeccionMateria>();
                _misMateriasSeleccionadas = _estudianteActual.MisMateriasSeleccionadasPreMatricula;
                _listaSeccionesMateria = new List<SeccionMateria>();
                _counterSelected = 0;
            }

            protected void RowsLoad(Materia miMateriaSeleccionada, SeccionMateria miSeccionPorMateria)
            {
                ListItem miSeccion = new ListItem();
                if (_estudianteActual.PreMatriculaModificable.Codigo != 0)
                {
                    foreach (SeccionMateria mySection in _estudianteActual.PreMatriculaModificable.ListaSecciones) //quizas de peo
                    {
                        if (mySection.Codigo == miSeccionPorMateria.Codigo)
                        {
                            miSeccion.Selected = true;
                        }
                    }
                }
                miSeccion.Value = miSeccionPorMateria.IdSeccionMateria.ToString();
                miSeccion.Text = "Seccion " + miSeccionPorMateria.Codigo.ToString() +
                                    "&nbsp;<b>(" + miMateriaSeleccionada.Nombre +
                                    ")</b><br/><br/><b>&nbsp&nbsp&nbspProfesor:&nbsp;</b>" + 
                                    miSeccionPorMateria.Profesor.Nombre + "&nbsp;" + 
                                    miSeccionPorMateria.Profesor.Apellido + "<br/>";
                foreach (HorarioDeClase horarioClase in miSeccionPorMateria.HorasClase)
                {
                    if (horarioClase.HoraInicio.Minute.ToString().Length < 2)
                        _minuteIni = "0" + horarioClase.HoraInicio.Minute.ToString();
                    else
                        _minuteIni = horarioClase.HoraInicio.Minute.ToString();
                    if (horarioClase.HoraFin.Minute.ToString().Length < 2)
                        _minuteFin = "0" + horarioClase.HoraFin.Minute.ToString();
                    else
                        _minuteFin = horarioClase.HoraFin.Minute.ToString();
                    miSeccion.Text += "&nbsp&nbsp&nbsp-&nbsp;" + horarioClase.Dia +
                                        ": " + horarioClase.HoraInicio.Hour.ToString() + ":" + _minuteIni +
                                        " a " + horarioClase.HoraFin.Hour.ToString() + ":" + _minuteFin + "<br/>";
                }
                miSeccion.Text += "<br/>";
                _misRadioSecciones.Items.Add(miSeccion); 
            }

            protected void TableLoad(List<Materia> misMateriasSeleccionadas)
            {
                foreach (Materia miMateriaSeleccionada in misMateriasSeleccionadas)
                {
                    _newRow = new TableRow();
                    _newCell = new TableCell();
                    _misRadioSecciones = new RadioButtonList();
                    tableListSecciones.Rows.Add(_newRow);
                    _newCell.BorderWidth = 1;
                    _newRow.Cells.Add(_newCell);
                    _misSeccionesPorMateria = _estudianteActual.GenerarSeccionesMateria(miMateriaSeleccionada);
                    _counterSecciones = 1;
                    foreach (SeccionMateria miSeccionPorMateria in _misSeccionesPorMateria)
                    {
                        _listaSeccionesMateria.Add(miSeccionPorMateria);
                        RowsLoad(miMateriaSeleccionada, miSeccionPorMateria);
                    }
                    _newCell.Controls.Add(_misRadioSecciones);
                }
            }

            protected void selectAlmostOne()
            {
                foreach (TableRow myRows in tableListSecciones.Rows)
                {
                    foreach (TableCell myCells in myRows.Cells)
                    {
                        foreach (RadioButtonList myControl in myCells.Controls)
                        {
                            foreach (ListItem myRadioItem in myControl.Items)
                            {
                                if (myRadioItem.Selected)
                                {
                                    _counterSelected++;
                                }
                            }
                            if (_counterSelected == 0)
                            {
                                myControl.Items[0].Selected = true;
                            }
                            else
                            {
                                _counterSelected = 0;
                            }
                        }
                    }
                }
                
            }

            protected void Page_Load(object sender, EventArgs e)
            {
                InitSecure();
                if ((_estudianteActual.PreMatriculaModificable.Codigo != 0) &&
                    (_estudianteActual.PageCounter == 2))
                {
                    labelMigaActual.Text = "Modificar PreMatricula";
                }
                else
                {
                    _estudianteActual.PreMatriculaModificable = new HorarioPreMatricula();
                    _estudianteActual.PageCounter = 0;
                    labelMigaActual.Text = "Agregar PreMatricula";
                }
                labelTitulo.Text = labelMigaActual.Text + "<br /><br /><br /><br />";
                InitComponents();
                TableLoad(_misMateriasSeleccionadas);
                selectAlmostOne();
            }

            protected void SetSelectedSections(SeccionMateria mySeccionMateria)
            {
                _miSeccionSeleccionada = new SeccionMateria();
                _miSeccionSeleccionada.IdSeccionMateria = mySeccionMateria.IdSeccionMateria;
                _miSeccionSeleccionada.Codigo = mySeccionMateria.Codigo;
                _miSeccionSeleccionada.HorasClase = mySeccionMateria.HorasClase;
                _miSeccionSeleccionada.ListaPractica = mySeccionMateria.ListaPractica;
                _miSeccionSeleccionada.Materia = mySeccionMateria.Materia;
                _miSeccionSeleccionada.PeriodoAcademico = mySeccionMateria.PeriodoAcademico;
                _miSeccionSeleccionada.Profesor = mySeccionMateria.Profesor;

                _misSeccionesSeleccionadas.Add(_miSeccionSeleccionada);
            }
            
            protected void btnNextHorariosSelected_Click(object sender, EventArgs e)
            {
                foreach (TableRow myRows in tableListSecciones.Rows)
                {
                    foreach (TableCell myCells in myRows.Cells)
                    {
                        foreach (RadioButtonList myControl in myCells.Controls)
                        {
                            foreach (ListItem myRadioItem in myControl.Items)
                            {
                                if (myRadioItem.Selected)
                                {
                                    foreach (SeccionMateria mySeccionMateria in _listaSeccionesMateria)
                                    {
                                        if (mySeccionMateria.IdSeccionMateria == Int32.Parse(myRadioItem.Value))
                                        {
                                            SetSelectedSections(mySeccionMateria);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                _estudianteActual.MisSeccionesSeleccionadasPreMatricula = _misSeccionesSeleccionadas;
                _estudianteActual.PageCounter++;
                _estudianteActual.SecuenceCounter = 3;
                Session["rol"] = "Estudiante";
                Response.Redirect("selectPracticasPreMatricula.aspx");
            }

            protected void btnBackHorariosSelected_Click(object sender, EventArgs e)
            {
                _estudianteActual.PageCounter--;
                _estudianteActual.SecuenceCounter = 1;
                Session["rol"] = "Estudiante";
                Response.Redirect("addMateriasPreMatricula.aspx");
            }

        #endregion Metotos
    }
}